using System;
using CloudStorage.API;
using CloudStorage.API.Entities;

namespace CloudStorage.Factories
{
  /// <summary>
  /// Access to Cloud Storage Table
  /// </summary>
  public interface ITableStorageAccountFactory
  {
    /// <summary>
    /// Get access to a Cloud Table Storage Account
    /// </summary>
    /// <param name="baseUri">Address of the account</param>
    /// <param name="accountName">Name of the account holder</param>
    /// <param name="base64Key">Private key to access the account</param>
    /// <returns><see cref="ITableStorageAccount"/></returns>
    ITableStorageAccount GetTableStorage(Uri baseUri, string accountName, string base64Key);

    /// <summary>
    /// Get access to a Cloud Table Storage Account
    /// </summary>
    /// <param name="storageAccountInfo"><see cref="IStorageAccountInfo"/></param>
    /// <returns><see cref="ITableStorageAccount"/></returns>
    ITableStorageAccount GetTableStorage(IStorageAccountInfo storageAccountInfo);
  }
}